'use strict';

// Number.prototype.toFixed = function(len) {
//     if (this === undefined || this === null || isNaN(this)) {
//         return '-'
//     }
//     if (!isFinite(this)) {
//         return '*'
//     }
//
//     var tempNum = 0;
//     var s,temp;
//
//     var isNegative=this<0?true:false
//
//     var s1 = Math.abs(this) + "";
//     var start = s1.indexOf(".");
//
//     //截取小数点后,0之后的数字，判断是否大于5，如果大于5这入为1
//
//     if(start>0&&s1.substr(start+len+1,1)>=5)
//         tempNum=1;
//
//     //计算10的len次方,把原数字扩大它要保留的小数位数的倍数
//     var temp = Math.pow(10,len);
//     //求最接近this * temp的最小数字
//     //floor() 方法执行的是向下取整计算，它返回的是小于或等于函数参数，并且与之最接近的整数
//     s = Math.floor(Math.abs(this) * temp) + tempNum;
//     var res1 = s/temp;
//     var printPlace = res1.toString().indexOf('.');
//     var indexPrint = (res1.toString().length-1) - printPlace;
//     if(printPlace==-1){
//         indexPrint = 0;
//         res1 = res1.toString()+'.'
//     }
//     if (indexPrint == len) {
//         return isNegative?0-res1:res1
//     }else{
//         for (var i = 0; i <len-indexPrint ; i++) {
//             res1 = res1.toString()+'0'
//         }
//         return isNegative?0-res1:res1
//     }
//     // var re = new RegExp("^-?\\d+(?:\\.\\d{0,"+len+"})?"); // not right one
//     // var res2 = res1.toString().match(re)[0]
//
// }


Number.prototype.toFixed = function (d, type) {
    if (type !== 'souban') {
        var power = Math.pow(10, d || 0);
        return String(Math.round(this * power) / power);
    }
    var newThis = Math.round((parseFloat(this) + 0.00001) * 100) / 100;
    var s = '' + newThis;
    if (!d) d = 0;
    if (s.indexOf('.') == -1) s += '.';
    s += new Array(d + 1).join('0');
    if (new RegExp('^(-|\\+)?(\\d+(\\.\\d{0,' + (d + 1) + '})?)\\d*$').test(s)) {
        var s = '0' + RegExp.$2,
            pm = RegExp.$1,
            a = RegExp.$3.length,
            b = true;
        if (a == d + 2) {
            a = s.match(/\d/g);
            if (parseInt(a[a.length - 1]) > 4) {
                for (var i = a.length - 2; i >= 0; i--) {
                    a[i] = parseInt(a[i]) + 1;
                    if (a[i] == 10) {
                        a[i] = 0;
                        b = i != 1;
                    } else break;
                }
            }
            s = a.join('').replace(new RegExp('(\\d+)(\\d{' + d + '})\\d$'), '$1.$2');
        }if (b) s = s.substr(1);
        return (pm + s).replace(/\.$/, '');
    }return '' + this;
};

String.prototype.toFixed = Number.prototype.toFixed;
